from flask_migrate import Migrate
from flask_restx import Api
from flask_sqlalchemy import SQLAlchemy
from flask_jwt_extended import JWTManager
from flask_security import Security


db = SQLAlchemy()  # SQLAlchemy 数据库实例，提供 ORM 能力
migrate = Migrate()  # 数据迁移管理器，维护数据库结构版本
jwt = JWTManager()  # JWT 管理器，负责令牌签发与验证
security = Security()  # Flask-Security 扩展实例，提供认证与权限控制

api = Api(
    title="TT2 Backend API",  # Swagger 文档标题，便于识别项目
    version="1.0",  # 文档版本号，对齐接口版本迭代
    description="REST API with JWT authentication and role-based access",  # 接口描述信息
    doc="/docs",  # Swagger UI 访问路径，便于调试
    authorizations={  # 全局鉴权声明，决定 Swagger Authorize 按钮内容
        "Bearer": {  # Bearer: 使用 JWT Bearer Token 传递凭证
            "type": "apiKey",  # 采用 apiKey 模式向 Swagger 暴露
            "in": "header",  # 凭证通过 HTTP Header 传入
            "name": "Authorization",  # 认证头字段名称
            "description": "在框中输入：Bearer <JWT>",  # 提示格式，确保包含 Bearer 前缀
        },
    },
    security="Bearer",  # 默认要求 Bearer 安全策略，可按需在接口上覆盖
)
